/*
 * motor.c
 *
 *  Created on: Sep 14, 2025
 *      Author: lianz
 */
#define PWM_MAX		7200
#define PWM_MIN		-7200

#include "motor.h"
#include "stm32f1xx_hal.h"
#include "tim.h"
int abs(int num)
{
	if (num < 0) return -num;
	else return num;
}

void Load(int moto1, int moto2)		//-7200 ~ 7200
{
	if (moto1 > 0)
	{
		HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, RESET);
		HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, SET);
	}
	else
	{
		HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, SET);
		HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, RESET);
	}
	__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_APWM, abs(moto1));

	if (moto2 > 0)
	{
		HAL_GPIO_WritePin(BIN1_GPIO_Port, BIN1_Pin, RESET);
		HAL_GPIO_WritePin(BIN2_GPIO_Port, BIN2_Pin, SET);
	}
	else
	{
		HAL_GPIO_WritePin(BIN1_GPIO_Port, BIN1_Pin, SET);
		HAL_GPIO_WritePin(BIN2_GPIO_Port, BIN2_Pin, RESET);
	}
	__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_BPWM, abs(moto2));
}

void Moto_Limit(int* moto1, int* moto2)
{
	if (*moto1 > PWM_MAX) *moto1 = PWM_MAX;
	if (*moto1 < PWM_MIN) *moto1 = PWM_MIN;
	if (*moto2 > PWM_MAX) *moto2 = PWM_MAX;
	if (*moto2 < PWM_MIN) *moto2 = PWM_MIN;
}
